Add pdb_read2, correct sign extension.
authorrobertl <robertl@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Sat, 17 Aug 2002 06:18:15 +0000 (06:18 +0000)
committerrobertl <robertl@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Sat, 17 Aug 2002 06:18:15 +0000 (06:18 +0000)
gpsbabel/util.c

index 7bdf8b4d2c0353682ebf07489c3c6b49ed174f82..e70bf7f54e16f05a873fa18815d636e860e6d4ba 100644 (file)
@@ -66,13 +66,20 @@ fatal(const char *fmt, ...)
 /*
  * Read 4 bytes in big-endian.   Return as "int" in native endianness.
  */
-int
+signed int
 pdb_read4(pdb_32 *p)
 {
-       char *i = (char *) p;
+       unsigned char *i = (unsigned char *) p;
        return i[0] << 24 | i[1] << 16  | i[2] << 8 | i[3];
 }
 
+signed int
+pdb_read2(pdb_16 *p)
+{
+       char *i = (char *) p;
+       return i[0] << 8 | i[0];
+}
+
 void
 pdb_write4(pdb_32 *pp, unsigned i)
 {